# RUN: llvm-mc -triple=arc -disassemble %s | FileCheck %s

# CHECK: ld %r0, [%r0,0]
0x00 0x10 0x00 0x00

# CHECK: ldh %r0, [%r0,0]
0x00 0x10 0x00 0x01

# CHECK: ldb %r0, [%r0,0]
0x00 0x10 0x80 0x00

# CHECK: ld %r1, [%r0,12]
0x0c 0x10 0x01 0x00

# CHECK: ld %r14, [%fp,-12]
0xf4 0x13 0x0e 0xb0

# CHECK: ld %r3, [%r0,-12]
0xf4 0x10 0x03 0x80

# CHECK: ld %r0, [%r0,244]
0xf4 0x10 0x00 0x00

# CHECK: ld %r0, [%r0,-12]
0xf4 0x10 0x00 0x80

# CHECK: ldh.x %r3, [%r1,0]
0x00 0x11 0x43 0x01

# CHECK: ldh.x %r2, [%r1,2]
0x02 0x11 0x42 0x01

# CHECK: ldh.x %r2, [%fp,-132]
0x7c 0x13 0x42 0xb1

# CHECK: ld %r0, [%r0,64000]
0x30 0x20 0x80 0x0f 0x00 0x00 0x00 0xfa

# CHECK: ld %r6, [63920]
0x00 0x16 0x06 0x70 0x00 0x00 0xb0 0xf9

# CHECK: stb %r2, [%sp,35]
0x23 0x1c 0x82 0x30

# CHECK: st %r7, [63920]
0x00 0x1e 0xc0 0x71 0x00 0x00 0xb0 0xf9

# CHECK: ldb.ab	%r1, [%r0,1]
0x01 0x10 0x81 0x04

# CHECK: stb.ab	%r2, [%r0,1]
0x01 0x18 0x92 0x00

# CHECK: ldh.ab  %r3, [%r0,12]
0x0C 0x10 0x03 0x05

# CHECK: sth.ab  %r4, [%r0,18]
0x12 0x18 0x14 0x01

# CHECK: ld.ab   %r5, [%r2,128]
0x80 0x12 0x05 0x04

# CHECK: st.ab   %r6, [%r2,64]
0x40 0x1A 0x90 0x01

# CHECK: ldb.aw	%r7, [%r0,1]
0x01 0x10 0x87 0x02

# CHECK: stb.aw	%r8, [%r0,1]
0x01 0x18 0x0A 0x02

# CHECK: ldh.aw  %r3, [%r0,12]
0x0C 0x10 0x03 0x03

# CHECK: sth.aw  %r3, [%r0,18]
0x12 0x18 0xCC 0x00

# CHECK: ld.aw   %r6, [%r2,128]
0x80 0x12 0x06 0x02

# CHECK: st.aw   %r6, [%r2,64]
0x40 0x1A 0x88 0x01

# CHECK: ld.aw   %r6, [%r2,128]
0x80 0x12 0x06 0x02

# CHECK: st.aw   %r6, [%r2,64]
0x40 0x1A 0x88 0x01

# CHECK: ldb.x.di.aw %r0, [%r8,8]
0x08 0x10 0xC0 0x1A

# CHECK: stb.di.ab   %r0, [%r9,64]
0x40 0x19 0x32 0x10

# LR instructions with a U6 immediate bit pattern
# ([33] maps to the [%count0] auxilary register)

# CHECK: lr %r0, [33]
0x6a 0x20 0x40 0x08

# CHECK: lr %r7, [33]
0x6a 0x27 0x40 0x08

# CHECK: lr %r15, [33]
0x6a 0x27 0x40 0x18

# CHECK: lr %r22, [33]
0x6a 0x26 0x40 0x28

# LR instructions with an S12 immediate bit pattern

# CHECK: lr %r0, [33]
0xaa 0x20 0x40 0x08

# The following don't necessarily map to real auxilary registers, but
# the different range of numbers helps exercise the S12 decoder.

# CHECK: lr %r0, [-33]
0xaa 0x20 0x60 0x08

# CHECK: lr %r0, [97]
0xaa 0x20 0x41 0x08

# CHECK: lr %r0, [-97]
0xaa 0x20 0x61 0x08
